package com.example.exceldemo.service;

import com.example.exceldemo.model.DocGenerationFile;
import com.example.exceldemo.model.DocGenerationTask;
import com.example.exceldemo.model.PageResult;
import com.example.exceldemo.model.dto.TaskQueryDTO;

import java.util.List;

/**
 * 文档任务服务接口
 */
public interface DocTaskService {
    
    /**
     * 创建文档生成任务
     *
     * @param filePath 上传的Excel文件路径
     * @param selectedReqs 选择的需求ID列表
     * @return 任务ID
     */
    String createTask(String filePath, List<String> selectedReqs);
    
    /**
     * 更新任务状态
     *
     * @param taskId 任务ID
     * @param status 状态
     * @param progress 进度
     * @param outputDir 输出目录
     * @param errorMsg 错误信息
     */
    void updateTaskStatus(String taskId, String status, Integer progress, String outputDir, String errorMsg);
    
    /**
     * 查询任务
     *
     * @param taskId 任务ID
     * @return 任务详情
     */
    DocGenerationTask getTask(String taskId);
    
    /**
     * 分页查询任务
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<DocGenerationTask> listTasks(TaskQueryDTO queryDTO);
    
    /**
     * 查询任务文件列表（Service层实现，原DAO自定义方法已迁移）
     *
     * @param taskId 任务ID
     * @return 文件列表
     */
    List<DocGenerationFile> listTaskFiles(String taskId);
    
    /**
     * 记录生成的文件（Service层实现，原DAO自定义方法已迁移）
     *
     * @param taskId 任务ID
     * @param reqNo 需求编号
     * @param reqName 需求名称
     * @param filePath 文件路径
     * @param fileSize 文件大小
     * @param fileType 文件类型
     */
    void recordFile(String taskId, String reqNo, String reqName, String filePath, Long fileSize, String fileType);
    
    /**
     * 批量记录生成的文件（Service层实现，原DAO自定义方法已迁移）
     *
     * @param files 文件列表
     */
    void recordFiles(List<DocGenerationFile> files);
} 